home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / pc / LOGIC Apple II 5.25" Library - DOS Part 3 / DOS073.dsk / FUNCTION PLOTTER I.bas < prev    next >
BASIC Source File  |  2012-02-16  |  4KB  |  81 lines

  1. 5  DIM A(20)
  2. 10  TEXT : HOME : VTAB 10: PRINT "DO YOU NEED INSTRUCTIONS? (Y/N)";: GET IN$: PRINT : PRINT : PRINT : IF IN$ < >"Y"  THEN 130
  3. 20  HOME : VTAB 5
  4. 25  HTAB 17: PRINT "<CTRL-G>N<CTRL-G>O<CTRL-G>T<CTRL-G>E<CTRL-G>:": VTAB 10: SPEED= 50: INVERSE : PRINT "ANSWERS TO YES/NO QUESTIONS ARE A 'Y'   OR 'N'.  DO ";: FLASH : PRINT "NOT";: INVERSE : PRINT " HIT 'RETURN' AFTER THESERESPONSES...":
  5. 27  FOR I = 1 TO 1000: NEXT I: SPEED= 255: NORMAL 
  6. 30  PRINT "THIS PROGRAM WILL PLOT ANY FUNCTION BUT WILL NOT DO RELATIONS, SUCH AS ELIPSES."
  7. 40  PRINT : PRINT "TO USE, ENTER YOUR FUNCTION ON LINE 250 IN THE FORM SHOWN BELOW. USE 'BASIC'    SYNTAX ONLY:"
  8. 50  PRINT : HTAB 5: PRINT "250  DEF FN EQ(X)= [YOUR FUNCTION]"
  9. 60  PRINT : PRINT "FOR EXAMPLE, YOU COULD DEFINE A LINE AS:"
  10. 70  HTAB 5: PRINT "250  DEF FN EQ(X)= 2*X-1"
  11. 80  PRINT : PRINT "THIS WOULD BE ANALOGOUS TO THE ALGEBRA  EXPRESSIONS OF:"
  12. 90  PRINT : PRINT "   Y = 2X - 1   OR   F(X)--> 2X - 1"
  13. 93  PRINT : PRINT "HIT ANY KEY TO CONTINUE.";: GET IN$
  14. 94  PRINT : PRINT : PRINT : GOTO 130
  15. 100  HOME 
  16. 101  INVERSE : PRINT : PRINT "----YOU MAY NOW ENTER YOUR FUNCTION-----";
  17. 110  PRINT "WHEN YOU ARE FINISHED, RUN THE PROGRAM. ": NORMAL 
  18. 113  VTAB 10
  19. 115  PRINT " 250 DEF FN EQ(X)=";
  20. 117  VTAB 9
  21. 120  END 
  22. 130  PRINT "DO YOU NEED TO ENTER A FUNCTION NOW?";: GET IN$: PRINT : PRINT : PRINT : IF IN$ = "Y"  THEN 100
  23. 140  DATA 104,168,104,166,223,154,72,152,72,96
  24. 150  RESTORE : FOR I = 768 TO 777: READ N: POKE I,N: NEXT I
  25. 160  HOME : VTAB 24
  26. 170  FOR I = 0 TO 20
  27. 180 A(I) = 20000
  28. 190  NEXT I
  29. 200  ONERR  GOTO 690
  30. 210  REM NEW RANGE SECTION...
  31. 220  HOME : VTAB 10
  32. 230  PRINT "ENTER FACTOR FOR DIVISION OF X AXIS:        (USUALLY 10)"
  33. 240  INPUT XF:XF =  ABS(XF)
  34. 245  REM <CTRL-J><CTRL-J>
  35. 250  DEF  FN EQ(X) =  -8
  36. 255  REM <CTRL-J><CTRL-J>
  37. 260  PRINT : PRINT : PRINT "SCALE WILL BE THE FOLLOWING:"
  38. 270  PRINT : PRINT "X RANGE:  "; -140/XF;" TO ";140/XF
  39. 280  PRINT "Y RANGE:  "; -80/XF;" TO ";80/XF
  40. 290  PRINT : PRINT : PRINT "IS THIS OK?": GET IN$: PRINT : IF IN$ < >"Y"  THEN 210
  41. 300  PRINT : PRINT : PRINT "ENTER THE CO-ORDINATES FOR THE CENTER OF THE SCREEN:"
  42. 310  PRINT "    X=";: HTAB 12: PRINT "(USUALLY 0)";: HTAB 7: INPUT CX
  43. 320  PRINT "    Y=";: HTAB 12: PRINT "(USUALLY 0)";: HTAB 7: INPUT CY:CY =  -CY
  44. 395  PRINT : PRINT "DO YOU WANT THE HIRES SCREEN TO RETAIN  THE LAST GRAPHING?";: GET IN$: IF IN$ = "Y"  THEN  POKE  -16297,0: POKE  -16304,0: GOTO 398
  45. 397  HGR 
  46. 398  HCOLOR= 5
  47. 410 XC = 140/XF: GOTO 470
  48. 470  GOSUB 610
  49. 490  FOR X = CX +(XC -(1/XF)) TO CX -XC  STEP ( -1/XF)
  50. 500  FOR I = 0 TO K: IF X = A(I)  THEN  NEXT X
  51. 510  NEXT I
  52. 520 Y =  -( FN EQ(X))
  53. 530  PRINT "X=";X;: HTAB 20: PRINT "Y="; -Y
  54. 540  IF Y >CY +(80/XF)  OR Y <CY -(80/XF)  THEN  NEXT X
  55. 560  IF (XF *X +140) <0  THEN 590
  56. 570  HPLOT  INT((XF *(X -CX) +140)), INT(XF *(Y -CY) +80)
  57. 580  NEXT X
  58. 590  VTAB 24: PRINT "X DIV=";10/XF,"Y DIV=";10/XF
  59. 600  GOTO 1000
  60. 610  HOME : VTAB 24
  61. 620  HCOLOR= 3
  62. 630  FOR I = 0 TO 279  STEP 2: HPLOT I,80: NEXT I: HPLOT 140,0 TO 140,159
  63. 640  FOR I = 0 TO 279  STEP 10
  64. 650  HPLOT I,78: HPLOT I,82: NEXT I
  65. 660  FOR I = 0 TO 159  STEP 10
  66. 670  HPLOT 138,I: HPLOT 142,I: NEXT I
  67. 680  RETURN 
  68. 690  PRINT "<CTRL-G><CTRL-G>": REM  TWO BELLS: ERROR ROUTINE
  69. 700  CALL 768
  70. 710 E =  PEEK(222): IF E = 133  THEN A(K) = X:K = K +1: GOTO 490
  71. 720  IF E = 163  OR E = 53  OR E = 254  THEN  VTAB 24: PRINT "IMPROPER INPUT": GOTO 780
  72. 730  IF E = 191  THEN  VTAB 24: PRINT "FORMULA TOO COMPLEX": GOTO 780
  73. 740  IF E = 224  THEN  VTAB 24: PRINT "UNDEFINED FUNCTION": GOTO 780
  74. 750  IF E = 69  THEN  VTAB 24: PRINT "OVERFLOW": GOTO 780
  75. 760  IF E = 77  THEN  CALL 768:A(K) = X:K = K +1: GOTO 490
  76. 770  PRINT "PEEK(222)=";E
  77. 780  PRINT "TYPE 'TEXT', RETYPE LINE 250 AND RERUN": POKE 216,0: END 
  78. 790  POKE 216,0: END 
  79. 1000  INVERSE : PRINT "PRESS 'RETURN' TO CONTINUE, 'Q' TO QUIT";: GET IN$: IF IN$ < >"Q"  THEN  NORMAL : TEXT : GOTO 10
  80. 1010  NORMAL : GOTO 32000
  81. 32000  POKE 216,0: END